iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0

論文的核心設計是九個模型的集成:AdaBoost、CNN、DNN、GBDT、LSTM、Random Forest、ResNet、SVR、LightGBM,各自預測月報酬排名再合起來。九個聽起來很厚實。這篇在留出期上問一個直接的問題:九個模型的集成,比一個 LightGBM 好多少?

答案:0.130 對 0.131,沒有比較好。 而在同一批實驗裡,另一件事帶來了真正的差別。


設定

Day 14 立的規矩全部照做:Day 12 的 48 個特徵、每週抽樣、標籤是之後 20 日報酬的橫斷面排名。walk-forward:每年 1 月用該年之前的資料重訓(清掉最後 4 週),預測該年;2020 到 2026 年七次重訓,留出期只碰這一次。

九個模型。論文裡的 CNN、LSTM、ResNet、SVR 這台機器跑不動(前三個沒有 GPU 跑不完,SVR 在百萬列上是天文數字),換成同性質的替代,維持九個:

線性        Ridge、ElasticNet
梯度提升    LightGBM、HistGB(sklearn 的 GBDT)
隨機樹      Random Forest、ExtraTrees
其他        AdaBoost、MLP(兩層 64-32)、kNN(k=200)

全部餵同樣的特徵(每日橫斷面百分位),樹以外的模型缺值補 0.5。集成是九個模型各自在當日做百分位排名後取平均,不加權——論文的做法是把各模型的預測 normalize 之後結合,這裡用最單純的那種。另外多跑一個:LightGBM 加三個大盤狀態欄(廣度、距 200 日線、20 日波動,Day 13 的結論)。基準是 Day 13 那個不用訓練的等權六因子。

跑了 46 分鐘,峰值記憶體 3.3 GB。


排行榜

排行榜

                     平均 IC    ICIR    IC 勝率
LightGBM + 大盤狀態   0.140     0.93     83%
HistGB               0.133     1.23     90%
LightGBM             0.131     1.16     89%
九模型集成            0.130     1.01     83%
MLP                  0.125     1.32     91%
Random Forest        0.122     0.96     82%
Ridge                0.122     1.08     87%
ElasticNet           0.119     0.98     82%
ExtraTrees           0.118     0.78     77%
kNN                  0.106     0.91     82%
AdaBoost             0.098     0.60     71%
等權六因子            0.098     0.69     72%

四件事。

**模型確實贏過等權平均。**九個全部高過 0.098 的基準(最弱的 AdaBoost 只高 0.0001,等於沒贏),最好的單一模型 0.133,多了三成五;逐週看,LightGBM 有 72% 的週贏過等權。Day 12 說「疊二十個弱訊號、模型能到 0.1 出頭就是好成績」——實際是 0.13。

**兩個梯度提升排前兩名,線性模型不遠。**HistGB 0.133、LightGBM 0.131,Ridge 0.122——一個線性迴歸只輸最好的樹 0.01。48 個特徵裡的訊息大部分是線性的,樹多抓到的那一點是交互作用。

**MLP 最穩。**IC 0.125 排第五,但 ICIR 1.32 全場第一、91% 的週為正。

**AdaBoost 跟等權一樣。**0.098,ICIR 0.60 全場最低。它在論文的九個裡面,在這裡是拖累集成的那一個。


九個模型其實是幾個

集成能贏單一模型的前提是成員之間不一樣。算九個模型預測排名的相關:

模型相關

LightGBM  – HistGB          0.98
Ridge     – ElasticNet      0.98
RandomForest – ExtraTrees   0.96
九個兩兩平均               0.80
最低(AdaBoost – MLP)      0.61

平均相關 0.80。同一批特徵、同一個標籤,不管演算法叫什麼名字,看到的是同一件事——梯度提升彼此 0.98、線性彼此 0.98、隨機樹彼此 0.96。九個模型實際上是四五個觀點,而且每個觀點裡最強的那一個,已經把該觀點的訊息拿光了。

集成的數學很簡單:平均可以消掉彼此不相關的雜訊,消不掉共同的訊號也消不掉共同的盲點。成員相關 0.80,能消的雜訊不多;再把 AdaBoost(0.098)和 kNN(0.106)拉進來平均,等於用弱模型稀釋強模型。結果就是集成 0.130,比 LightGBM 低 0.001、比 HistGB 低 0.003,逐週對決只贏 LightGBM 46% 的週。

這不是說集成沒用——把弱的踢掉、只留不相關的幾個,或者換成 stacking 讓第二層學權重,都可能翻盤。這篇沒做,因為下一段的東西便宜得多。


真正有差的:讓模型看到大盤

Day 13 的結論是六個特徵有三種體質,防守型在跌市活、進攻型在亂市活,等權平均把它們攪在一起。讓模型看得到大盤狀態,它應該能自己學「什麼時候該信誰」。

實測就是加三欄——廣度、距 200 日線、20 日波動——其他完全不動:

                  平均 IC    2020    2022    2025    多空差 / 20 日
LightGBM          0.131    0.112   0.148   0.102      +1.24%
LightGBM + 狀態   0.140    0.150   0.121   0.128      +1.72%

平均 IC 多 0.009,看起來不多。拆開看:2020 年多 0.038、2025 年多 0.026——這兩年正是 Day 13 說「防守型特徵歸零」的年份,模型學會了在那種狀態下降低它們的權重。代價是 2022 年少 0.027:那年是一路下跌的空頭,防守型全開就是對的,狀態欄反而讓模型猶豫。

逐年

換成錢看更清楚。把分數分五組,最高組減最低組,每 20 日不重疊複利:

多空差

                     每 20 日    複利年化(四種起點平均)
等權六因子           +0.16%        +0.9%
九模型集成           +1.05%       +12.9%
LightGBM             +1.24%       +15.7%
LightGBM + 狀態      +1.72%       +22.4%

等權六因子在留出期的多空差只剩每 20 日 0.16%——Day 13 講過原因,2025 年之後的行情把它的防守型特徵打趴了。模型把它拉回 1.24%,加上大盤狀態拉到 1.72%。三欄大盤狀態的效果,比八個額外的模型加起來大。


定一把尺

從這篇開始,任何新東西——新特徵、新模型、第五幕的 LLM 文字訊號——都用同一把尺量:

資料        48 個特徵 + 3 個大盤狀態,每週抽樣,標籤 = 之後 20 日報酬排名
切法        walk-forward,每年重訓,清 4 週;留出期 2020~2026,只碰一次
指標        每週 IC 的平均、ICIR、勝率;五分位多空差每 20 日不重疊複利
要贏的數字  IC 0.140、ICIR 0.93;跟 LightGBM+狀態 逐週對決勝率過半
成本        Day 1 的 0.471%,換手用分批(每天換 1/20、每批持有 20 天)

三個刻度先記著:等權六因子 0.098 是「不用模型」的水準,LightGBM 0.131 是「模型」的水準,加狀態 0.140 是目前的上限。新東西進來,先過這把尺,再談別的。


小結

**一個 LightGBM 就跟九模型集成打平。**0.131 對 0.130,逐週對決集成只贏 46%。九個模型的預測相關平均 0.80,實際上是四五個觀點;再用 AdaBoost、kNN 這種 0.10 等級的成員去平均,是稀釋不是集成。

**模型贏等權三成五,線性只輸樹一點點。**LightGBM 0.131、Ridge 0.122、等權 0.098;MLP 的 ICIR 1.32 最穩。

**讓模型看到大盤,效果大過加八個模型。**三欄大盤狀態把 IC 從 0.131 拉到 0.140、多空差從每 20 日 1.24% 拉到 1.72%;2020 和 2025 兩個防守型失靈的年份各多 0.03,代價是 2022 年的空頭少 0.03。

尺定好了:walk-forward、留出期只碰一次、IC 0.140 是要贏的數字。之後每一天的新東西都用它量。


上一篇
Day 14 - 時序資料的 k-fold,切錯就全錯
下一篇
Day 16 - 昨晚的美股,開盤那一秒就用完了
系列文
台股日頻量化交易:開發一條從資料、特徵、模型到每日下單清單的產線19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言